import java.util.Arrays;
import java.util.LinkedList;
import java.util.stream.IntStream;

public class QueueReconstructionbyHeight0107_406 {
    public int[][] reconstructQueue(int[][] people) {
        LinkedList<int[]> queue = new LinkedList<>();

        //先按照身高h进行排序         身高从大到小排（身高相同k小的站前面）
        Arrays.sort(people,(a,b) -> {
            if(a[0] == b[0]) return a[1] - b[1];  // a - b 是升序排列，故在a[0] == b[0]的狀況下，会根据 k值升序排列
            else return b[0] - a[0]; //b - a 是降序排列，在a[0] != b[0]，的狀況 会根据h值降序排列
        });

        //再根据个数k 逐个插入到相应位置
        for (int[] p : people) {
            queue.add(p[1],p);  //Linkedlist.add(index, value)，会将value插入到指定index里
        }
        return queue.toArray(new int[][]{});
    }
}
